"""
面向对象编程，是许多编程语言都支持的一种编程思想

简单理解是：基于模板（类）去创建实体（对象），使用对象完成功能开发

面向对象包含3大主要特性：
    封装
    继承
    多态


封装表示的是，将现实世界事物的：
    属性
    行为

封装到类中，描述为：
    成员变量
    成员方法

从而完成程序对现实世界事物的描述
"""

"""
1.封装的概念是指：将现实世界事物在类中描述为属性和方法，即为封装

2.什么是私有成员？为什么需要私有成员：
    现实事物有部分属性和行为是不公开对使用者开放的
    同样在类中描述属性和方法的时候也需要达到这个要求，就需要定义私有成员了
    
3.如何定义私有成员：
    成员变量和成员方法的命名均以__作为开头即可
    
4.私有成员的访问限制：
    类对象无法访问私有成员
    类中的其它成员可以访问私有成员

"""


"""
私有成员有什么实际的意义：在类中提供仅供内部使用的属性和方法，而不对外开放（类对象无法使用）
"""



# 定义一个类，内含私有成员变量和私有成员方法
class Phone:
    __current_voltage = 0.5  # 当前手机运行电压

    def __keep_single_core(self):
        print("让CPU以单核模式运行")

    def call_by_5g(self):
        if self.__current_voltage >= 1:
            print("5g通话已开启")
        else:
            self.__keep_single_core()
            print("电量不足，无法使用5g通话，并已设置为单核运行进行省电。")


phone = Phone()

# phone.__keep_single_core()  # AttributeError: 'Phone' object has no attribute '__keep_single_core'
# print(phone.__current_voltage)  # AttributeError: 'Phone' object has no attribute '__current_voltage'

phone.call_by_5g()
"""
让CPU以单核模式运行
电量不足，无法使用5g通话，并已设置为单核运行进行省电。
"""

